package com.songjia.springcloud.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RoundRobinRule;
import com.songjia.springcloud.annotation.ExcludeComponentScan;

/**
 * 
 * 
 * @Description: Ribbon的配置类【该类不应该在主应用程序上下文的@ComponentScan中】
 *
 * @author: songjia
 * @date: 2018年8月31日 上午10:24:16
 */
@Configuration
@ExcludeComponentScan // 标记注解，被@ExcludeComponentScan包扫描过滤
public class RibbonConfiguration {

	@Bean
	public IRule iRule() {
		// 默认的算法为RoundRobinRule
		// Ribbon默认是轮询，我自定义为随机
		System.out.println("随机策略......");
		return new RoundRobinRule(); // 轮训【默认】
		// return new WeightedResponseTimeRule(); // 加权权重
		// return new RetryRule(); // 带有重试机制的轮训
		// return new RandomRule(); // 随机
		// return new TestRule(); // 自定义规则
	}
}
